1. Field of the Invention
This invention relates to graphics systems and, more particularly, to graphics systems capable of synchronizing multiple display streams or channels.
2. Description of the Related Art
A computer system typically relies upon its graphics system for producing visual output on the computer screen or display device. Early graphics systems were only responsible for taking what the processor produced as output and displaying it on the screen. In essence, they acted as simple translators or interfaces. Modern graphics systems, however, incorporate graphics processors with a great deal of processing power. They now act more like coprocessors rather than simple translators. This change is due to the recent increase in both the complexity and amount of data being sent to the display device. For example, modem computer displays have many more pixels, greater color depth, and are able to display more complex images with higher refresh rates than earlier models. Similarly, the images displayed are now more complex and may involve advanced techniques such as anti-aliasing and texture mapping.
As a result, without considerable processing power in the graphics system, the CPU would spend a great deal of time performing graphics calculations. This could rob the computer system of the processing power needed for performing other tasks associated with program execution and thereby dramatically reduce overall system performance. With a powerful graphics system, however, when the CPU is instructed to draw a box on the screen, the CPU is freed from having to compute the position and color of each pixel. Instead, the CPU may send a request to the video card stating, xe2x80x9cdraw a box at these coordinates.xe2x80x9d The graphics system then draws the box, freeing the processor to perform other tasks.
Generally, a graphics system in a computer is a type of video adapter that contains its own processor to boost performance levels. These processors are specialized for computing graphical transformations, so they tend to achieve better results than the general-purpose CPU used by the computer system. In addition, they free up the computer""s CPU to execute other commands while the graphics system is handling graphics computations. The popularity of graphics applications, and especially multimedia applications, has made high performance graphics systems a common feature in many new computer systems. Most computer manufacturers now bundle a high performance graphics system with their computing systems.
In many applications, it may be useful to have two monitors or displays connected to the same computer system. For example, in some graphical editing applications, it is desirable to use one monitor to show a close-up of an area being edited, while another monitor shows a wider field of view of the object or picture being edited. Alternatively, some users may configure one monitor to display the object being edited and the other monitor to display various palettes or editing options that can be used while editing. Another situation where multiple displays are useful occurs when several users are connected to a single computer. In such a situation, it may be desirable for each user to have their own display. In another situation, it may simply be desirable to have multiple displays that each display a different portion of an image in order to provide a larger display than would otherwise be possible. Another example is stereo goggles, which present different images to their wearer""s left and right eyes in order to create a stereo viewing effect. These examples illustrate just a few of the many situations where it is useful to have multiple displays connected to the same computer system.
Given the complexity and expense of many graphics systems, it may be desirable to provide a graphics system that can support multiple displays without duplicating the entire graphics system. Thus, there is a need to be able to share portions of a graphics system between multiple display channels.
Various embodiments of a graphics system that is configured to synchronize a slave display channel to a master display channel are disclosed. In one embodiment, a graphics system may include a master display timing generator configured to provide a frame event indication and a slave display timing generator. The slave display timing generator is configured to receive the frame event indication and, in response to receiving the frame event indication during its active display period, the slave display timing generator may be configured to wait until its current active display period ends and then jump to its synchronization point.
The master display timing generator may be configured to provide the frame indication in response to reaching its vertical frame toggle point. The vertical frame toggle point may occur during the master display timing generator""s vertical front porch. Similarly, the slave display channel""s synchronization point may be the slave display channel""s vertical frame toggle point.
In another embodiment, a graphics system may include a master display timing generator configured to provide a frame event indication and a slave display timing generator configured to provide synchronization signals to a display. The slave display timing generator may be configured to receive the frame event indication and, in response to receiving the frame event indication, to jump to the slave display timing generator""s synchronization point. The graphics system may also include a display output queue configured to provide pixels to the display that receives the synchronization signals from the slave display timing generator. The display output queue may be configured to output prefetched display information for an interrupted frame during the next active display period in response to the slave display timing generator jumping to its synchronization point before entering its vertical blanking interval.
One embodiment of a method of synchronizing a plurality of display timing generators includes providing a frame event indication, a slave display timing generator detecting the frame event indication, and if the frame event indication is detected during the slave display timing generator""s active display period, the slave display timing generator jumping to the slave display timing generator""s synchronization point after the slave display timing generator""s current active display period ends.
In another embodiment of a method of synchronizing a plurality of display timing generators, a frame event indication is provided, a slave display timing generator detects the frame event indication, and in response to detecting the frame event indication, the slave display timing generator jumps to the slave display timing generator""s synchronization point. If the frame event indication is detected during the slave display timing generator""s active display period, jumping to the synchronization point may involve interrupting a frame that is currently being displayed by a display coupled to receive synchronization signals from the slave display timing generator. If so, the remaining display information in the interrupted frame may be output during the next active display period. For example, if the frame N is being displayed when the slave display timing generator jumps to its synchronization point, a portion of frame N may not yet have been sent to the display when the jump occurs. If any of the remaining portion of frame N has already entered the pipeline to be displayed (e.g., been prefetched from the frame buffer), this portion may be displayed during the next active display period. In the display period after the remaining data from frame N is displayed, frame N+2 may displayed.